.pragma library

var dadinhos = null;

function carregaDados() {
    var reqOrama = new XMLHttpRequest();
    reqOrama.onreadystatechange=function()
            {
                if (reqOrama.readyState == XMLHttpRequest.DONE)
                {
                    dadinhos = reqOrama.responseXML;
                }
            }
    reqOrama.open("GET", "dados.xml", true);
    reqOrama.send(null);
}

carregaDados();

function estacoesDaLinha(corDaLinha)
{
    if (dadinhos != null)
    {
        var linhas = dadinhos.documentElement;
        for (var i = 0; i < linhas.childNodes.length; i++)
        {
            if (linhas.childNodes[i].nodeName == "linhas")
            {
                for (var j = 0; j < linhas.childNodes[i].childNodes.length; j++)
                {
                    if (linhas.childNodes[i].childNodes[j].nodeName == "linha")
                    {
                        var linhaDaLinha = linhas.childNodes[i].childNodes[j];
                        if (linhaDaLinha.attributes[1].value == corDaLinha)
                        {
                            for (var k = 0; k < linhaDaLinha.childNodes.length; k++)
                            {
                                var estacoes = linhaDaLinha.childNodes[k];
                                if (estacoes.nodeName == "estacoes")
                                {
                                    return estacoes;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    else
    {
        return null;
    }
}

function estacoesParaArray(corDaLinha)
{
    var estacoes = estacoesDaLinha(corDaLinha);
    if (estacoes != null)
    {
        var arrEstacoes = new Array();
        for (var i = 0; i < estacoes.childNodes.length; i++)
        {
            if (estacoes.childNodes[i].nodeName == "estacao")
            {
                arrEstacoes.push(estacoes.childNodes[i].attributes[0].value); //nome da estação
            }
        }
        return arrEstacoes;
    }
    else
    {
        return null;
    }
}

function indexPosicao(arr, valor)
{
    for (var i = 0; i < arr.length; i++)
        if (arr[i] == valor) {
            return i;
        }
    return -1;
}

function terminaisDaLinha(corDaLinha)
{
    var arrEstacoesLinha = estacoesParaArray(corDaLinha);
    if (arrEstacoesLinha != null)
        return new Array(arrEstacoesLinha[0], arrEstacoesLinha[arrEstacoesLinha.length-1]);
    else
        return null;
}

function proximaEstacao(corDaLinha, estacaoAtual, estacaoSentido)
{
    var arrEstacoesLinha = estacoesParaArray(corDaLinha);
    if (arrEstacoesLinha != null && corDaLinha != "" && estacaoAtual != "" && estacaoSentido != "")
    {
        var iEstacaoAtual = indexPosicao(arrEstacoesLinha, estacaoAtual);
        var iEstacaoSentido = indexPosicao(arrEstacoesLinha, estacaoSentido);
        var ultimoIndiceEstacoes = arrEstacoesLinha.length - 1;

        var prox = -1;
        if (((iEstacaoAtual == 0 || iEstacaoAtual == ultimoIndiceEstacoes) && iEstacaoAtual != iEstacaoSentido)
                || (iEstacaoAtual != 0 && iEstacaoAtual != ultimoIndiceEstacoes)
                )
        {
            if (iEstacaoAtual < iEstacaoSentido)
                prox = 1;
            else
                prox = -1;
        }
        else
        {
            prox = 0;
        }

        return arrEstacoesLinha[iEstacaoAtual + prox];
    }
    else
    {
        return "";
    }
}

function getDadinho()
{
    return dadinhos;
}
